import React, { Component } from 'react'

import { createPortal } from 'react-dom'

import Dialog from './Dialog'

// portal 是一个特殊的子组件
// 它可以转载到我们制定的位置
// portal 可以定义一个事件，这个事件可以冒泡到父组件
export default class Portal extends Component {
  state = {
    content: 'dialog body',
    show: false
  }
  

  handleClick = () => {
    this.setState({
      show: false
    })
  }

  handleShowDialog = (e) => {
    e.stopPropagation()
    this.setState({
      show: true
    })
  }

  render() {
    let portal = createPortal(
      <Dialog content={this.state.content}></Dialog>,
      document.querySelector('body')
    )

    return (
      <div onClick={this.handleClick}>
        {
          this.state.show && portal
        }
        <div>
          <button onClick={this.handleShowDialog}>show dialog</button>
        </div>
      </div>
    )
  }
}
